home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / interclue-1.5.6-fx.xpi / chrome / interclue / content / options.js < prev    next >
Text File  |  2008-06-03  |  3KB  |  116 lines

  1.  
  2. /**
  3. * initalize this window
  4. */
  5. function init(){
  6.     initPresets();
  7.     sizeToContent();
  8.     moveToAlertPosition();
  9. }
  10.  
  11. /**
  12. * open the advanced options dialog
  13. */
  14. function openAdvancedOptionsDialog(page){
  15.     var Klib = interclue.getKlib();
  16.     
  17.     if (Klib){
  18.         Klib.Pref.openAdvancedPrefsWindow(page);
  19.         window.close();
  20.     }
  21. }
  22.  
  23. /**
  24. * if user hits the ok/save button
  25. */
  26. function onAccept(){
  27.     //we need to alter the prefs accordingly
  28.     if (savePreferenceSets()){
  29.         //all good
  30.         return true;
  31.     }
  32.     else {
  33.         alert("Failed to save prefs!");
  34.         return false;
  35.     }
  36. }
  37.  
  38. /**
  39. * Update individual options etracted from an optiongroup 
  40. */
  41. function savePreferenceSets(){
  42.  
  43.     var Klib = interclue.getKlib();
  44.     if (Klib){
  45.         var radios = document.getElementsByTagName("radio");
  46.         for (var i=0; i<radios.length; i++){
  47.             var radio = radios[i];
  48.             if (radio.selected && radio.getAttribute("preferenceset")){
  49.                 //save the prefs for this radio button
  50.                 var pairs = Klib.extractKeyValuePairs(radio.getAttribute("preferenceset"), ",", true);
  51.                 for(var prefId in pairs){
  52.                     Klib.Pref.set(prefId, pairs[prefId]);
  53.                 }
  54.             }
  55.         }
  56.         return true;
  57.     }
  58.     else {
  59.         return false;
  60.     }
  61. }
  62.  
  63.  
  64.  
  65. /**
  66. * select the correct radio buttons depending on which options are set
  67. */
  68. function initPresets(){
  69.  
  70.     var Klib = interclue.getKlib();
  71.     if (Klib){
  72.  
  73.         var groups = ["preset-speed", "preset-performance", "preset-bandwidth"];
  74.  
  75.         for (var i=0; i<groups.length; i++){
  76.             var group = groups[i];
  77.             var eles = Klib.getEles("radio.interclue-"+ group, document);
  78.             var groupChecked = false;
  79.  
  80.             for (var j=0; j<eles.length; j++){
  81.                 var ele = eles[j];
  82.                 
  83.                 var set = ele.getAttribute("preferenceset");
  84.  
  85.                 if (set){
  86.                     //assume
  87.                     var eleChecked = true;
  88.                 
  89.                     //split into key/value pairs
  90.                     var pairs = Klib.extractKeyValuePairs(set, ",", true);
  91.  
  92.                     //and check if they match the currently set pref
  93.                     for (var prefid in pairs){
  94.                         if (Klib.Pref.get(prefid) != pairs[prefid]){
  95.                             eleChecked = false;
  96.                             break;
  97.                         }
  98.                     }
  99.                     //and select this radio button 
  100.                     ele.setAttribute("selected", eleChecked ? "true" : "");
  101.                     if (eleChecked){
  102.                         groupChecked = true;
  103.                     }
  104.                 }
  105.                 else {
  106.                     //select the "use advanced options" radio if no others from this group are selected.
  107.                     ele.setAttribute("selected", groupChecked ? "" : "true");
  108.                 }
  109.             }
  110.         }
  111.     }
  112.     else {
  113.         alert("Klib not set");
  114.     }
  115. }
  116.